home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / RLaB 1.18c / testmatrix / rando.r < prev    next >
Text File  |  1994-12-20  |  1KB  |  46 lines

  1. //-------------------------------------------------------------------//
  2.  
  3. // Synopsis:    Random matrix with elements -1, 0 or 1.
  4.  
  5. // Syntax:    A = rando ( N , K )
  6.  
  7. // Description:
  8.  
  9. //    A is a random N-by-N matrix with elements from one of the
  10. //    following discrete distributions (default K = 1):  
  11.  
  12. //         K = 1:  A(i,j) =  0 or 1    with equal probability,
  13. //         K = 2:  A(i,j) = -1 or 1    with equal probability,
  14. //         K = 3:  A(i,j) = -1, 0 or 1 with equal probability.
  15.  
  16. //      N may be a 2-vector, in which case the matrix is N(1)-by-N(2).
  17.  
  18. //    This file is a translation of rando.m from version 2.0 of
  19. //    "The Test Matrix Toolbox for Matlab", described in Numerical
  20. //    Analysis Report No. 237, December 1993, by N. J. Higham.
  21.  
  22. //-------------------------------------------------------------------//
  23.  
  24. rando = function ( n, k )
  25. {
  26.   local (n, k)
  27.  
  28.   if (!exist (k)) { k = 1; }
  29.  
  30.   m = n[1];        // Parameter n specifies dimension: m-by-n.
  31.  
  32.   n = n[max(size(n))];
  33.  
  34.   rand("uniform", 0, 1);
  35.   if (k == 1)                // {0, 1}
  36.   {
  37.     A = floor( rand(m,n) + .5 );
  38.   else if (k == 2) {            // {-1, 1}
  39.     A = 2*floor( rand(m,n) + .5 ) - 1;
  40.   else if (k == 3) {            // {-1, 0, 1}
  41.     A = round( 3*rand(m,n) - 1.5 );
  42.   }}}
  43.  
  44.   return A;
  45. };
  46.